home *** CD-ROM | disk | FTP | other *** search
/ Champak 138 / Volume 138 Aug 19 2011 - Damaged.iso / Games / shadez.swf / scripts / Local / Draw / CExplodeBMDParticle.as < prev    next >
Text File  |  2011-08-19  |  5KB  |  163 lines

  1. package Local.Draw
  2. {
  3.    import flash.display.BitmapData;
  4.    import flash.filters.BlurFilter;
  5.    import flash.geom.Matrix;
  6.    import flash.geom.Point;
  7.    import flash.geom.Rectangle;
  8.    
  9.    public class CExplodeBMDParticle
  10.    {
  11.       
  12.       public static var mAllocateID:int = 0;
  13.       
  14.       public static var mWorldPosition:Point;
  15.       
  16.       public static var mKillHeight:int;
  17.       
  18.       public static var mParticleSize:Number = 15;
  19.       
  20.       public static var mDefaultParticleSize:Number = 8;
  21.       
  22.       public static const zPoint:Point;
  23.       
  24.       {
  25.          if(true)
  26.          {
  27.             zPoint = new Point(0,0);
  28.             if(true)
  29.             {
  30.                mDefaultParticleSize = 8;
  31.                if(true)
  32.                {
  33.                   mParticleSize = 15;
  34.                }
  35.                mAllocateID = 0;
  36.             }
  37.             mWorldPosition = new Point(0,0);
  38.          }
  39.       }
  40.       
  41.       public var mID:String;
  42.       
  43.       public var mInvalid:Boolean;
  44.       
  45.       private var mDelta:Point;
  46.       
  47.       private var mBMD:BitmapData;
  48.       
  49.       public var Process:Function;
  50.       
  51.       private var mDispMatrix:Matrix;
  52.       
  53.       private var mDeltaRadians:Number;
  54.       
  55.       private var mDrawMatrix:Matrix;
  56.       
  57.       public var Render:Function;
  58.       
  59.       public var mDrawn:Boolean;
  60.       
  61.       public function CExplodeBMDParticle(param1:BitmapData, param2:Rectangle, param3:Matrix, param4:Point = null)
  62.       {
  63.          var _loc5_:BitmapData = null;
  64.          var _loc6_:Rectangle = null;
  65.          var _loc7_:Number = NaN;
  66.          super();
  67.          (_loc5_ = new BitmapData(Math.ceil(param2.width + 4),Math.ceil(param2.height + 4),true,0)).copyPixels(param1,param2,new Point(2,2));
  68.          if(!((_loc6_ = _loc5_.getColorBoundsRect(4278190080,0,false)).width && _loc6_.height))
  69.          {
  70.             mInvalid = true;
  71.             return;
  72.          }
  73.          mBMD = _loc5_;
  74.          mBMD.applyFilter(mBMD,mBMD.rect,zPoint,new BlurFilter(2,2,1));
  75.          mDispMatrix = new Matrix(1,0,0,1,-(_loc6_.x + _loc6_.width / 2),-(_loc6_.y + _loc6_.height / 2));
  76.          mDrawMatrix = new Matrix(1,0,0,1,param2.x + _loc6_.width / 2,param2.y + _loc6_.height / 2);
  77.          mDrawMatrix.concat(param3);
  78.          mDrawMatrix.tx += mWorldPosition.x;
  79.          mDrawMatrix.ty += mWorldPosition.y;
  80.          mDelta = new Point(Math.random() * 40 - 20,-Math.random() * 40);
  81.          _loc7_ = Math.min(1,mParticleSize / mDefaultParticleSize);
  82.          mDelta.x *= _loc7_;
  83.          mDelta.y *= _loc7_;
  84.          if(param4)
  85.          {
  86.             mDelta = mDelta.add(param4);
  87.          }
  88.          mID = "P" + ++mAllocateID;
  89.          if(mParticleSize < 4)
  90.          {
  91.             Process = Process_NoSpin;
  92.             Render = Render_NoSpin;
  93.          }
  94.          else
  95.          {
  96.             mDeltaRadians = Math.random() * 3 - 1.5;
  97.             Process = Process_Spin;
  98.             Render = Render_Spin;
  99.          }
  100.       }
  101.       
  102.       public function Process_NoSpin() : Boolean
  103.       {
  104.          mDelta.x *= 0.99;
  105.          mDelta.y = mDelta.y * 0.99 + 1;
  106.          mDrawMatrix.tx += mDelta.x;
  107.          mDrawMatrix.ty += mDelta.y;
  108.          ┬º┬ºpush(mDrawMatrix.ty >= mKillHeight);
  109.          if(true)
  110.          {
  111.             ┬º┬ºpush(!┬º┬ºpop());
  112.          }
  113.          return ┬º┬ºpop();
  114.       }
  115.       
  116.       public function Process_Spin() : Boolean
  117.       {
  118.          if(true)
  119.          {
  120.             mDelta.x *= 0.99;
  121.             if(true)
  122.             {
  123.                mDelta.y = mDelta.y * 0.99 + 1;
  124.                if(true)
  125.                {
  126.                   ┬º┬ºpush(┬º┬ºfindproperty(mDeltaRadians));
  127.                   ┬º┬ºpush(mDeltaRadians);
  128.                   if(true)
  129.                   {
  130.                      ┬º┬ºpush(┬º┬ºpop() * 0.95);
  131.                   }
  132.                   ┬º┬ºpop().mDeltaRadians = ┬º┬ºpop();
  133.                   mDispMatrix.rotate(mDeltaRadians);
  134.                }
  135.                mDrawMatrix.tx += mDelta.x;
  136.             }
  137.             mDrawMatrix.ty += mDelta.y;
  138.          }
  139.          return mDrawMatrix.ty < mKillHeight;
  140.       }
  141.       
  142.       public function Render_Spin(param1:BitmapData) : void
  143.       {
  144.          var _loc2_:Matrix = null;
  145.          _loc2_ = mDispMatrix.clone();
  146.          _loc2_.concat(mDrawMatrix);
  147.          _loc2_.tx -= mWorldPosition.x;
  148.          _loc2_.ty -= mWorldPosition.y;
  149.          param1.draw(mBMD,_loc2_);
  150.       }
  151.       
  152.       public function Render_NoSpin(param1:BitmapData) : void
  153.       {
  154.          param1.copyPixels(mBMD,mBMD.rect,new Point(mDispMatrix.tx + mDrawMatrix.tx - mWorldPosition.x,mDispMatrix.ty + mDrawMatrix.ty - mWorldPosition.y),null,null,true);
  155.       }
  156.       
  157.       public function Dispose() : void
  158.       {
  159.          mBMD.dispose();
  160.       }
  161.    }
  162. }
  163.